/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BancoDados;

import Utilidades.UtilityDB;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Created on : May 14, 2011, 11:12:52 PM
 * @author diogo
 */
public abstract class Relatorio extends Dado{


	/**
	 * quantidade de profissionais por area, ordenado pelo maior<br/>
	 * relatorio 0
	 * @param profissao
	 * @param profissional
	 * @return
	 */
	public static ResultSet AreaQuantidade(String profissao, String profissional){

		ResultSet rs = null;
		try {
			String SQL = UtilityDB.CallFunction("fn_filtrar_area_quantidade", profissao, profissional);
			rs = c.consultar(SQL);
		} catch (SQLException ex) {
			Logger.getLogger(Relatorio.class.getName()).log(Level.SEVERE, null, ex);
		}


		return rs;
	}

	/**
	 * quantidade de profissionais por area, ordenado pelo maior<br/>
	 * relatorio 0
	 * @return
	 */
	public static ResultSet AreaQuantidade(){
		return GeraRelatorio("vwr_area_quantidade");
	}

	/**
	 * profissao, profissionais e suas notas ordenadas.<br/>
	 * relatorio 1
	 * @return
	 */
	public static ResultSet ProfissionaisSolicitacao(){
		return GeraRelatorio("vwr_profissionais_solicitacao");
	}

	/**
	 * Quantidade de profissoes com maior numero de solicitacoes<br/>
	 * relatorio 2
	 * @return
	 */
	public static ResultSet QtdProfissaoSolicitacao(){
		return GeraRelatorio("vwr_qtd_profissao_solicitacao");
	}

	/**
	 * Profissionais mais requisitados pelos clientes<br/>
	 * relatorio 3
	 * @return
	 */
	public static ResultSet QtdProfissionalSolicitacao(){
		return GeraRelatorio("vwr_qtd_profissional_solicitacao");
	}

	/**
	 * Areas com maior numero de solicitacoes<br/>
	 * relatorio 4
	 * @return
	 */
	public static ResultSet QtdAreaSolicitacao(){
		return GeraRelatorio("vwr_qtd_area_solicitacao");
	}

	/**
	 * Clientes que mais contrataram<br/>
	 * relatorio 5
	 * @return
	 */
	public static ResultSet SomaClienteSolicitacao(){
		return GeraRelatorio("vwr_soma_cliente_solicitacao");
	}

	/**
	 * funcao migue para gera um relatorio, na verdade soh chama uma funcao do banco e retorna resultset
	 * @param nomeFuncao
	 * @return
	 */
	public static ResultSet GeraRelatorio(String nomeFuncao){
		ResultSet rs = null;
		try {
			//String SQL = String.format("select * from fn_filtrar_area_quantidade(%s, %s)", UtilityDB.FormatSingleObject(profissao),  UtilityDB.FormatSingleObject(profissional));
			String SQL = UtilityDB.CallFunction(nomeFuncao);
			rs = c.consultar(SQL);
		} catch (SQLException ex) {
			Logger.getLogger(Relatorio.class.getName()).log(Level.SEVERE, null, ex);
		}

		return rs;
	}


	public static ResultSet GeraRelatorio(int ID){
		ResultSet rs = null;

		switch (ID) {
			case 0:
				rs = AreaQuantidade();
				break;
			case 1:
				rs = ProfissionaisSolicitacao();

				break;
			case 2:
				rs = QtdProfissaoSolicitacao();

				break;
			case 3:
				rs = QtdProfissionalSolicitacao();

				break;
			case 4:
				rs = QtdAreaSolicitacao();

				break;
			case 5:
				rs = SomaClienteSolicitacao();

				break;
			default:
				throw new AssertionError();
		}

		return rs;
	}
}
